#ifndef MYSINGLETON_H
#define MYSINGLETON_H

#include <QMutex>
#include <QWaitCondition>
#include <QQueue>

/// 考虑线程安全的单例设计模式+锁机制
class mySingleton
{
    Q_DISABLE_COPY(mySingleton)

    // 私有构造函数
    explicit mySingleton() = default;

    // 缓冲区数据结构
    QQueue<QByteArray> m_buffer;
    mutable QMutex m_mutex;
    QWaitCondition m_notEmpty;
public:
    // 获取单例实例（线程安全）
    static mySingleton& instance();

    // 线程安全操作接口
    void enqueue(const QByteArray& data);
    QByteArray dequeue(int timeout = 0); // 支持超时等待
    bool isEmpty() const;
    int size() const;

    // 禁止外部构造/析构
    ~mySingleton() = default;
};


#endif // MYSINGLETON_H
